/**
 * WangSong 2009-9-24 修改了方法类异常处理，按层次分析异常原因，仅输出简单提示
 */
package cn.biplam.common.client;

import java.rmi.RemoteException;

import cn.biplam.common.interfaces.LogServer;
import cn.biplam.common.tools.DEBUG;
import cn.biplam.common.tools.RMITOOLS;
import cn.biplam.common.wrapper.ErrorMessage;

/**
 * 日志记录<BR>
 * 支持并发日志记录，因此每个静态方法单独初始化服务实例
 * @author 	WangSong
 * @create 	2009-3-11 下午04:46:17
 * @version 1.0
 */
public class Log {
	
	public enum Log_Level{
		/** 系统调试信息*/
		Debug,
		/** 系统开发版本信息*/
		Develop_Info,
		/** 系统运行时正常的信息提示*/
		Info,
		/** 系统运行时异常,程序逻辑将中断*/
		Error,
		/** 核心异常,该类异常将导致系统崩溃*/
		Core_Error,
		/** 系统警告信息*/
		Warnning;
	}
	
	/**
	 * @throws ErrorMessage 
	 * 功能 写日志
	 */
	public static void write(ErrorMessage mErrorMessage,Log_Level level) {
		LogServer mLogServer = null;
		try {
			mLogServer = (LogServer)RMITOOLS.getInstance("LogServer");
		} catch (ErrorMessage e) {
			DEBUG.println("【Log Error】Get Remote Instance Failed! "+e.getMessage());
			DEBUG.println("【Log Message】"+mErrorMessage.toString());
			return;
		}
		try {
			mLogServer.write(mErrorMessage, level);
		} catch (RemoteException e) {
			DEBUG.println("【Log Error】Unknown RemoteException! "+e.getMessage());
			DEBUG.println("【Log Message】"+mErrorMessage.toString());
		} catch (ErrorMessage e) {
			DEBUG.println("【Log Error】"+e.getMessage());
			DEBUG.println("【Log Message】"+mErrorMessage.toString());
		}
	}
	
	/**
	 * 功能  日志输出到控制台，默认级别为0
	 * @param sMessage  日志信息
	 * @throws ErrorMessage 
	 */
	public static void write(String sMessage) {
		LogServer mLogServer = null;
		try {
			mLogServer = (LogServer)RMITOOLS.getInstance("LogServer");
		} catch (ErrorMessage e) {
			DEBUG.println("【Log Error】Get Remote Instance Failed! "+e.getMessage());
			DEBUG.println("【Log Message】"+sMessage);
			return;
		}
		try {
			mLogServer.write(sMessage);
		} catch (RemoteException e) {
			DEBUG.println("【Log Error】Unknown RemoteException! "+e.getMessage());
			DEBUG.println("【Log Message】"+sMessage);
		} catch (ErrorMessage e) {
			DEBUG.println("【Log Error】"+e.getMessage());
			DEBUG.println("【Log Message】"+sMessage);
		}
	}
	
	/**
	 * 功能  日志输出到控制台，自定义级别
	 * @param sMessage  日志信息
	 * @param iLevel    日志级别
	 * @throws ErrorMessage 
	 */
	public static void write(String sMessage,Log_Level level) {
		LogServer mLogServer = null;
		try {
			mLogServer = (LogServer)RMITOOLS.getInstance("LogServer");
		} catch (ErrorMessage e) {
			DEBUG.println("【Log Error】Get Remote Instance Failed! "+e.getMessage());
			DEBUG.println("【Log Message】"+sMessage);
			return;
		}
		try {
			mLogServer.write(sMessage,level);
		} catch (RemoteException e) {
			DEBUG.println("【Log Error】Unknown RemoteException! "+e.getMessage());
			DEBUG.println("【Log Message】"+sMessage);
		} catch (ErrorMessage e) {
			DEBUG.println("【Log Error】"+e.getMessage());
			DEBUG.println("【Log Message】"+sMessage);
		}
	}
	
	/**
	 * 功能：构造方法(阻止new本类)
	 */
	private Log(){}
}
